//
//  string_reverse.hpp
//  cpp_algorithm
//
//  Created by 李贺 on 2021/12/13.
//

#ifndef string_reverse_hpp
#define string_reverse_hpp

#include <stdio.h>
#include <vector>
#include <iostream>
#include <string>
#include <unordered_map>
using namespace std;

namespace my_string_reverse_space {
void my_reverse_demo(vector<char> s);
}



class Solution_string_reverse {
    
public:
    
    void myreverse(string& s, int start, int end) {
        for (int i = start, j = end; i < j; i++, j--) {
            swap(s[i], s[j]);
        }
    }
    
    string reverseStr(string s, int k) {
        for (int i = 0; i < s.size(); i += (2 * k)) {
            // 1. 每隔 2k 个字符的前 k 个字符进行反转
            // 2. 剩余字符小于 2k 但大于或等于 k 个，则反转前 k 个字符
            if (i + k <= s.size()) {
                myreverse(s, i, i + k - 1);
                continue;
            }
            // 3. 剩余字符少于 k 个，则将剩余字符全部反转。
            myreverse(s, i, s.size() - 1);
        }
        return s;
    }
};

#endif /* string_reverse_hpp */
